package controller.editorcontroller;

import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.image.BufferedImage;

import javax.swing.ImageIcon;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JScrollPane;

import model.editormodel.LogicEditorElement;
import controller.commoncontroller.UtilityDialogs;

/**
 * Listener der ausloest wenn man in dem eingeblendeten Screenshot des
 * selbstdefinierten Bauteils auf den Button zum oeffnen des Screenshots in
 * einem eigenen Fenster drueckt.
 * 
 * 
 * @author Team Locsi
 * 
 */
public class ShowSelfDefinedPictureInWindowListener extends MouseAdapter {

	/**
	 * Referenz auf das angezeigte Bild
	 */
	private BufferedImage fimg;

	/**
	 * Referenz auf das zugehoerige LogicEditorElement
	 */
	private LogicEditorElement lEE;
	
	/**
	 * Referenz auf den JDialog
	 */
	private JDialog sdPictureJDialog;

	/**
	 * Konstruktor mit den benoetigten Referenzen
	 * 
	 * @param fimg
	 *            <code>BufferedImage</code> - Referenz auf das angezeigte Bild
	 * @param lEE
	 *            <code>LogicEditorElement</code> - Referenz auf das zugehoerige
	 *            LogicEditorElement
	 * @param eArea
	 *            <code>EditorArea</code> - Referenz auf die EditorArea
	 * @param showPicPanel
	 *            <code>JPanel</code> - Referenz auf das eingeblendete Panel
	 */
	public ShowSelfDefinedPictureInWindowListener(BufferedImage fimg,
			LogicEditorElement lEE, JDialog sdPictureJDialog) {
		this.fimg = fimg;
		this.lEE = lEE;
		this.sdPictureJDialog = sdPictureJDialog;
	}

	/**
	 * Diese Methode erzeugt ein JDialog, in dem der Aufbau eines
	 * selbstdefinierten Bauteils angezeigt wird.
	 */
	@Override
	public void mouseClicked(MouseEvent e) {
		JScrollPane scroller = new JScrollPane(new JLabel(new ImageIcon(fimg)));
		scroller.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
		scroller.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
		JDialog dialog = new JDialog(UtilityDialogs.getFrame());
		dialog.setTitle(lEE.getName());
		dialog.add(scroller);
		dialog.setLocation(e.getLocationOnScreen());
		dialog.setVisible(true);
		dialog.pack();
		sdPictureJDialog.dispose();
	}
}
